package com.mzx.javase.常用类;

/**
 * @Description: StringBuilder的使用
 * @Date: 2022/5/10 22:19
 * @Author: MarKing
 */
public class StringBuilderTest {
    public static void main(String[] args) {
        /**
         * 可变长字符串：因为String的声明会在方法区的字符串常量池中创建并且无法释放，所以在字符串拼接的时候，会导致方法区中的字符串常量池中
         * 有大量拼接字符串占用资源。所以引入了可变长字符串StringBuilder和StringBuffer
         *
         * StringBuilder和StringBuffer的区别：
         * 1、StringBuilder是现成不安全的，效率更高
         * 2、StringBuffer是线程安全的，有syncronized修饰，因此效率比StringBuilder低
         * 3、StringBuilder和StringBuffer创建时默认创建长度为16的字节数组(jdk8及以下为字符数组)
         */
        long begin = System.currentTimeMillis();
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("i");
        stringBuilder.append(" love ");
        stringBuilder.append("you!");
//        for (int i = 0; i < 10000; i++) {
//            stringBuilder.append(i);
//        }
//        String stringBuilder = "";
//        for (int i = 0; i < 10000; i++) {
//            stringBuilder += i;
//        }
        System.out.println(stringBuilder);
        long end = System.currentTimeMillis();
        System.out.println("耗时：" + (end - begin) + "ms");

    }
}
